package vn.edu.saigontech.ncms.util;

class NumberToString {

	// Ham chuyen doi tu so sang chuoi
	public static String parseString(String sNumber) {
		// Tao mot bien tra ve
		String sReturn = "";
		// Tim chieu dai cua chuoi
		int iLen = sNumber.length();
		// Lat nguoc chuoi nay lai
		String sNumber1 = "";
		for (int i = iLen - 1; i >= 0; i--) {
			sNumber1 += sNumber.charAt(i);
		}
		// Tao mot vong lap de doc so
		// Tao mot bien nho vi tri cua sNumber
		int iRe = 0;
		do {
			// Tao mot bien cat tam
			String sCut = "";
			if (iLen > 3) {
				sCut = sNumber1.substring((iRe * 3), (iRe * 3) + 3);
				sReturn = Read(sCut, iRe) + sReturn;
				iRe++;
				iLen -= 3;
			} else {
				sCut = sNumber1.substring((iRe * 3), (iRe * 3) + iLen);
				sReturn = Read(sCut, iRe) + sReturn;
				break;
			}
		} while (true);
		return sReturn;
	}

	// Khoi tao ham Read
	public static String Read(String sNumber, int iPo) {
		// Tao mot bien tra ve
		String sReturn = "";
		// Tao mot bien so
		String sPo[] = { "", "ngàn ", "triệu ", "tỷ " };
		String sSo[] = { "không ", "một ", "hai ", "ba ", "bốn ", "năm ",
				"sáu ", "bảy ", "tám ", "chín " };
		String sDonvi[] = { "", "mươi ", "trăm " };
		// Tim chieu dai cua chuoi
		int iLen = sNumber.length();
		// Tao mot bien nho vi tri doc
		int iRe = 0;
		// Tao mot vong lap de doc so
		for (int i = 0; i < iLen; i++) {
			String sTemp = "" + sNumber.charAt(i);
			int iTemp = Integer.parseInt(sTemp);
			// Tao mot bien ket qua
			String sRead = "";
			// Kiem tra xem so nhan vao co = 0 hay ko
			if (iTemp == 0) {
				switch (iRe) {
				case 0:
					break;// Khong lam gi ca
				case 1: {
					if (Integer.parseInt("" + sNumber.charAt(0)) != 0) {
						sRead = "lẻ ";
					}
					break;
				}
				case 2: {
					if (Integer.parseInt("" + sNumber.charAt(0)) != 0
							&& Integer.parseInt("" + sNumber.charAt(1)) != 0) {
						sRead = "không trăm ";
					}
					break;
				}
				}
			} else if (iTemp == 1) {
				switch (iRe) {
				case 1:
					sRead = "mười ";
					break;
				default:
					sRead = "một " + sDonvi[iRe];
					break;
				}
			} else {
				sRead = sSo[iTemp] + sDonvi[iRe];
			}

			sReturn = sRead + sReturn;
			iRe++;
		}
		if (sReturn.length() > 0) {
			sReturn += sPo[iPo];
		}
		return sReturn;
	}
}